package com.project.system.domain.entity;

import com.project.common.domain.po.DbBase;
import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.time.LocalTime;

/**
 * @author : [chg]
 * @className : AttendanceRule
 * @description : 考勤规则实体
 * @createTime : [2025/7/9 11:30]
 */
@Entity
@Data
@Table(name = "tb_employee_attendance_rule")
@org.hibernate.annotations.Table(appliesTo = "tb_employee_attendance_rule", comment = "考勤规则")
public class HrAttendanceRule extends DbBase {
    @Column(columnDefinition = "bigint DEFAULT NULL COMMENT '仓库ID'")
    private Long warehouseId; // 仓库ID
    //是否自由上下班8小时制度
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '是否自由上下班8小时结算制度（1-是,2-否）'")
    private Integer flexibleHours;

    @Column(columnDefinition = "time DEFAULT NULL COMMENT '早上上班时间'")
    private LocalTime workStart; // 早上上班时间

    @Column(columnDefinition = "time DEFAULT NULL COMMENT '早上打卡有效开始时间'")
    private LocalTime clockInStart;
    @Column(columnDefinition = "time DEFAULT NULL COMMENT '早上打卡有效结束时间'")
    private LocalTime clockInEnd;
    
    @Column(columnDefinition = "time DEFAULT NULL COMMENT '早上下班时间'")
    private LocalTime morningEnd; // 早上下班时间

    @Column(columnDefinition = "time DEFAULT NULL COMMENT '早上下班打卡有效开始时间'")
    private LocalTime morningOutStart;
    @Column(columnDefinition = "time DEFAULT NULL COMMENT '早上下班打卡有效结束时间'")
    private LocalTime morningOutEnd;

    @Column(columnDefinition = "time DEFAULT NULL COMMENT '中午上班时间'")
    private LocalTime noonStart; // 中午上班时间

    @Column(columnDefinition = "time DEFAULT NULL COMMENT '中午上班打卡有效开始时间'")
    private LocalTime noonInStart;
    @Column(columnDefinition = "time DEFAULT NULL COMMENT '中午上班打卡有效结束时间'")
    private LocalTime noonInEnd;
    
    @Column(columnDefinition = "time DEFAULT NULL COMMENT '下午下班时间'")
    private LocalTime workEnd; // 下午下班时间

    @Column(columnDefinition = "time DEFAULT NULL COMMENT '下午下班打卡有效开始时间'")
    private LocalTime clockOutStart;
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '是否次日(0-否，1-是)'")
    private Integer nextDay;
    @Column(columnDefinition = "time DEFAULT NULL COMMENT '下午下班打卡有效结束时间'")
    private LocalTime clockOutEnd;

    @Column(columnDefinition = "int DEFAULT NULL COMMENT '迟到界定（分钟）'")
    private Integer lateThreshold; // 迟到界定（分钟）
    
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '早退鉴定（分钟）'")
    private Integer earlyThreshold; // 早退鉴定（分钟）
    
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '加班起算时长（分钟）'")
    private Integer overtimeMin; // 加班起算时长（分钟）
    
    @Column(columnDefinition = "int DEFAULT NULL COMMENT '规则状态（0-启用,1-禁用）'")
    private Integer status; // 规则状态（0-启用,1-禁用）

    @Column(columnDefinition = "int DEFAULT NULL COMMENT '启用中午打卡（1-启用,2-禁用）'")
    private Integer enableNoonClock; // 规则状态（1-启用,2-禁用）
}